package cn.jiahua.test13;

import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;

public class Test3 {

    /**
     * 停车场： 3个位置
     * 人数： 6个人
     * @param args
     */
    public static void main(String[] args) {

        //3个停车位
        //  semaphore.acquire();获得，如果获得执行
        // 其他线程没有获取acquire(),在阻塞状态,等待
        //  semaphore.release();释放，会将当前的信号释放+1，然后唤醒等待的线程

        Semaphore semaphore =new Semaphore(3);


        for (int i=1;i<=6;i++){

            new Thread(()->{
                //1.获取停车位置许可证
                try {
                    semaphore.acquire();
                    System.out.println(Thread.currentThread().getName()+"抢到停车位了！");
                    TimeUnit.SECONDS.sleep(2);
                    System.out.println(Thread.currentThread().getName()+"离开停车位了！");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }finally {
                    semaphore.release();
                }
            }).start();
        }
    }
}
